package com.ck.javacode.Chapter6;

import javax.rmi.CORBA.Util;

/**
 * @author: caoke
 * @date: 2021/10/8 2:42 下午
 * @description:冒泡排序
 */
public class D8_BubbleSort {
    public static void main(String[] args) {
        //我们将五个无序:24,69,80,57,13 使用冒泡排序法将其排成一个从小到大的有 序数列
        //老韩 化繁为简，先死后活
        /*
        数组 [24,69,80,57,13]
        第 1 轮排序: 目标把最大数放在最后
        第 1 次比较[24,69,80,57,13]
        第 2 次比较[24,69,80,57,13]
        第 3 次比较[24,69,57,80,13]
        第 4 次比较[24,69,57,13,80]
        */
//        int[] arr = {24,69,80,57,13};
//        int temp = 0;//用于辅助交换的变量
//        for (int j =0; j<arr.length-1; j++){ //4次比较
//            // 如果前面的数》后面的数，就交换
//            if (arr[j]> arr[j+1]){
//                temp = arr[j];
//                arr[j] = arr[j+1];
//                arr[j+1] = temp;
//            }
////            int l =arr[j];
////            int r =arr[j+1];
////            if (l>r){
////                arr[j] = r;
////                arr[j+1] = l;
////            }
//        }
//        System.out.println("====arr 的元素情况====="); //6. 输出 arr 看看
//        for (int i = 0; i<arr.length; i++){
//            System.out.print(arr[i] + "\t");
//        }
        /*
        第 2 轮排序: 目标把第二大数放在倒数第二位置
        第 1 次比较[24,69,57,13,80]
        第 2 次比较[24,57,69,13,80]
        第 3 次比较[24,57,13,69,80]
        */
//        for (int j =0; j<arr.length-2; j++){ //3次比较
//            // 如果前面的数》后面的数，就交换
//            if (arr[j]> arr[j+1]){
//                temp = arr[j];
//                arr[j] = arr[j+1];
//                arr[j+1] = temp;
//            }
//        }
//        System.out.println("====arr 的元素情况====="); //6. 输出 arr 看看
//        for (int i = 0; i<arr.length; i++){
//            System.out.print(arr[i] + "\t");
//        }
        /*
        第3轮排序: 目标把第3大数放在倒数第3位置
        第 1 次比较[24,57,13,69,80]
        第 2 次比较[24,13,57,69,80]

        第4轮排序: 目标把第4大数放在倒数第4位置
        第 1 次比较[13,24,57,69,80]
         */
        int[] arr = {24,69,80,57,13};
        int[] oldArr = new int[arr.length];
        int temp = 0;//用于辅助交换的变量
        // 自己的方式
//        for (int i=arr.length-1;i>0;i--){
//            for (int j =0; j<i; j++){ //
//                // 如果前面的数》后面的数，就交换
//                if (arr[j]> arr[j+1]){
//                    temp = arr[j];
//                    arr[j] = arr[j+1];
//                    arr[j+1] = temp;
//                }
//            }
//            System.out.println("\n===="+(arr.length-i)+" 的元素情况====="); //6. 输出 arr 看看
//            for (int j = 0; j<arr.length; j++){
//                System.out.print(arr[j] + "\t");
//            }
//        }
        //其他方式
        for (int i =0; i<arr.length-1;i++){
            for (int j=0;j<arr.length-1-i;j++){
                if (arr[j]> arr[j+1]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            System.out.println("\n===="+(i+1)+" 的元素情况====="); //6. 输出 arr 看看
            for (int j = 0; j<arr.length; j++){
                System.out.print(arr[j] + "\t");
            }
        }

    }
}
